import { spawn } from 'child_process';

// 创建一个子进程，最底层方法，流式 IO 适合长时间运行、大数据量
const child = spawn('node', ['server.js']);
// 监听子进程的输出
child.stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);
})

// 添加换行，不然不会自动换行
process.stdout.write('呀呀呀呀呀' + child.pid + '\n');
// console.log封装也是stdout输出，不过做了格式兼容和处理
console.log('呀呀呀呀呀2' + child.pid + '\n');

// 监听子进程的错误输出
child.stderr.on('data', (data) => {
    console.error(`stderr: ${data}`);
})

// 监听子进程的退出事件
child.on('close', (code) => {
    console.log(`子进程退出，退出码 ${code}`);
})

// 向子进程发送数据
const msg = ['Hello, server!', 'How are you?', 'Bye!', '再见！', 'exit'];

// 每隔一秒发送一条消息
for (let i = 0; i < msg.length; i++) {
    setTimeout(() => {
        child.stdin.write(msg[i] + '\n');
    }, i * 1000);
}